Recurrent Neural Network (RNN) হল একটি নিউরাল নেটওয়ার্ক আর্কিটেকচার যা সিকোয়েন্সাল ডেটা, যেমন ভাষা বা সময়-সিরিজ ডেটা, প্রক্রিয়া করতে ব্যবহৃত হয়। CNTK তে RNN মডেল তৈরি, প্রশিক্ষণ এবং মূল্যায়ন করার প্রক্রিয়া নিম্নলিখিত ধাপে ব্যাখ্যা করা হয়েছে।
1. RNN মডেল তৈরি করা
CNTK তে RNN মডেল তৈরি করার জন্য, আমরা সাধারণত LSTM (Long Short-Term Memory) বা GRU (Gated Recurrent Units) ব্যবহার করি। এখানে LSTM ব্যবহার করে একটি রিকরেন্ট নিউরাল নেটওয়ার্ক তৈরি করার উদাহরণ দেওয়া হয়েছে।
import cntk
from cntk import layers
import numpy as np
# RNN মডেল তৈরি
model = layers.Sequential([
layers.Embedding(10, 64), # ইনপুট সিকোয়েন্সের জন্য এমবেডিং লেয়ার
layers.LSTM(64), # LSTM লেয়ার
layers.Dense(1) # আউটপুট লেয়ার (যেমন রিগ্রেশন জন্য 1 আউটপুট)
])
# ইনপুট ভেরিয়েবল তৈরি
input_var = cntk.input_variable((10,)) # উদাহরণস্বরূপ, 10 ডাইমেনশন ইনপুট
# মডেল দিয়ে আউটপুট তৈরি
output = model(input_var)
ব্যাখ্যা:
- Embedding Layer: এটি শব্দ বা সিকোয়েন্স ডেটা এমবেডিংয়ের জন্য ব্যবহার হয়।
- LSTM Layer: একটি LSTM লেয়ার, যা সিকোয়েন্সাল ডেটার প্যাটার্নগুলি শিখতে সাহায্য করে। এটি সাধারণত RNN এর উন্নত সংস্করণ হিসেবে ব্যবহৃত হয়।
- Dense Layer: আউটপুট লেয়ার হিসেবে কাজ করে।
2. RNN মডেল Training
RNN মডেল প্রশিক্ষণের জন্য loss function, optimizer, এবং trainer সেটআপ করতে হয়। এখানে আমরা mean squared error (MSE) loss function এবং Stochastic Gradient Descent (SGD) optimizer ব্যবহার করব।
from cntk import learners, losses
# ডেটা (random data used for simplicity)
X_train = np.random.rand(100, 10) # 100 স্যাম্পল, প্রতিটি 10 ডাইমেনশন ইনপুট
y_train = np.random.rand(100, 1) # 100 আউটপুট
# Loss function এবং Optimizer নির্বাচন করা
loss = losses.mean_squared_error(output, cntk.input_variable((1,))) # রিগ্রেশন সমস্যা
learner = learners.sgd(model.parameters, lr=0.01)
# মডেল ট্রেনিং
trainer = cntk.Trainer(model, (loss, None), learner)
trainer.train_minibatch({input_var: X_train, output: y_train})
ব্যাখ্যা:
- Loss Function: mean_squared_error ব্যবহার করা হয়েছে, যা রিগ্রেশন সমস্যার জন্য সাধারণ।
- Optimizer: SGD (Stochastic Gradient Descent) অপ্টিমাইজার ব্যবহার করা হয়েছে।
3. RNN মডেল Evaluation (মূল্যায়ন)
মডেল প্রশিক্ষণের পর, আপনি এটি মূল্যায়ন করতে পারবেন। মূল্যায়ন সাধারণত accuracy (ক্লাসিফিকেশন ক্ষেত্রে) অথবা mean squared error (MSE) (রিগ্রেশন ক্ষেত্রে) ব্যবহার করে করা হয়। এখানে রিগ্রেশন মডেল মূল্যায়ন করার উদাহরণ দেওয়া হয়েছে।
# মডেল টেস্ট ডেটা দিয়ে মূল্যায়ন
X_test = np.random.rand(20, 10) # 20 স্যাম্পল, প্রতিটি 10 ডাইমেনশন ইনপুট
y_test = np.random.rand(20, 1) # 20 আউটপুট
# মডেল টেস্ট করতে
predictions = model.eval({input_var: X_test})
# MSE (Mean Squared Error) ক্যালকুলেশন
mse = np.mean((predictions - y_test) ** 2)
print(f'Mean Squared Error: {mse}')
ব্যাখ্যা:
- eval():
eval()মেথড দিয়ে আপনি মডেলটি টেস্ট ডেটার সাথে মূল্যায়ন করতে পারবেন। - MSE (Mean Squared Error): এটি রিগ্রেশন সমস্যার জন্য একটি সাধারণ মেট্রিক, যা পূর্বাভাসের ভুল (error) পরিমাপ করে।
4. RNN মডেল Validation
প্রশিক্ষণ ও মূল্যায়নের পাশাপাশি, validation সেটের উপর মডেলের পারফর্মেন্স পরীক্ষা করা গুরুত্বপূর্ণ। এটি training এবং test ডেটার মধ্যে overfitting প্রতিরোধে সহায়ক। সাধারণত, k-fold cross-validation বা validation split ব্যবহার করা হয়।
# কাস্টম validation data প্রস্তুতি
X_val = np.random.rand(20, 10) # 20 স্যাম্পল
y_val = np.random.rand(20, 1)
# মডেল ভ্যালিডেশন
validation_predictions = model.eval({input_var: X_val})
validation_mse = np.mean((validation_predictions - y_val) ** 2)
print(f'Validation Mean Squared Error: {validation_mse}')
সারাংশ
- RNN মডেল তৈরি: CNTK তে একটি সাধারণ RNN মডেল তৈরি করার জন্য LSTM অথবা GRU লেয়ার ব্যবহার করা হয়, এবং ইনপুট এবং আউটপুট ভেরিয়েবল তৈরি করা হয়।
- Training: মডেল প্রশিক্ষণের জন্য loss function এবং optimizer সেট করে trainer তৈরি করা হয়।
- Evaluation: মডেল মূল্যায়নের জন্য সাধারণত MSE অথবা accuracy ব্যবহার করা হয়, যা মডেলের পারফর্মেন্স পরিমাপ করে।
এটি RNN মডেল তৈরি, প্রশিক্ষণ, এবং মূল্যায়নের একটি মৌলিক নির্দেশিকা ছিল।
Read more